package fr.upstlse.glre.client.administration.utilisateurs.action;

import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.WindowEvent;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.upstlse.glre.client.administration.utilisateurs.ModificationPanel;
import fr.upstlse.glre.client.administration.utilisateurs.ModificationWindow;
import fr.upstlse.glre.client.utilitaires.ControlerUtil;
import fr.upstlse.glre.client.vo.user.UserVOGWT;

public class DeleteUserAction implements Listener<WindowEvent> {

	private UserVOGWT user;

	public DeleteUserAction(UserVOGWT pUser) {
		user = pUser;
	}

	public void handleEvent(WindowEvent be) {
		if (be.buttonClicked.getText().equals("Yes")) {
			final MessageBox lWaitMessageBox = MessageBox.wait("Information",
					"Suppresion de l'utilisateur ", "suppression en cours...");
			AsyncCallback<Object> lCallback = new AsyncCallback<Object>() {
				public void onFailure(Throwable pCaught) {
					lWaitMessageBox.hide();
					MessageBox.alert("Erreur deleteUser", pCaught.getMessage(),
							null);
				}

				public void onSuccess(Object pResult) {
					lWaitMessageBox.hide();
					Info.display("Information",
							"Utilisateur supprimé avec succès", "");
					ModificationWindow.closeCurrentWindow();
					ModificationPanel.getInstance().getModificationList()
							.remove(
									ModificationPanel.getInstance()
											.getModificationList()
											.getSelectedItem());
				}
			};
			ControlerUtil.getUserControlerServiceAsyncInstance().deleteUser(
					user, lCallback);
		}
	}

}
